As a general operation, a “server computer” (hereinafter “server”) has a database to which “terminal computers” (hereinafter “PC”s) access. “Pessimistic lock cursor” (non-patent literature 1) and “transaction lock” are used for preventing competing of access.
MVCC (non-patent literature 1) uses “lock of editing work” (non-patent literature 4 and 5). Cache (non-patent literature 6) and ObjectStore (non-patent literature 7), that are products of OODB, also uses “lock of editing work”. PostgreSQL of relational DB (RDB) uses a command “LOCK TABLE”, in order to avoid simultaneous updating work (non-patent literature 5). This is also an “lock of editing work”. Patent document 1 is also an lock of editing work.
Cache art, that makes duplication for temporal working, is used for increasing efficiency of a processing and communication. ADO.NET of Microsoft makes a copy of data that are required for a present work from a server. Next, it cuts connection with the server and performs an editing work. After editing work, it connects to the server again, and sends “contents of editing work” to the server. This “editing work” will be repealed, if editing target information has been already changed by other PCs. This is called “optimistic concurrency control” (non-patent literature 7 and 8). This can be interpreted that; when a lock failed as the result, editing work is repealed. Thus, this is one kind of lock. This specification calls this method “first-arrival priority” for comparison with other methods. This “first-arrival priority” sometimes makes inconvenience as shown below.
(1) There is a case that an editing work based on the latest information is judged invalid. An editing work based on the latest information might be the best. If this is judged invalid, it will be a problem on actual DB operations.
For example, an operator of PC-X made a necessary copy from a server, and wrote at 9:00 in the morning that “this customer is a banter. No hospitality is necessary”, and left it for a while. On the other hand, an operator of PC-Y acquires information that “the customer proposed big-ticket dealings” at 12:00 noon. He writes “We should give him the maximum hospitality to get a contract” and sends it up to the server. A minute before this, if PC-X sends his edit up to the server, the edit by PC-Y will become invalid. This is the situation where editing work of PC-Y based on the latest information was opposed by capricious operation of the operator of PC-X.
(2) Since duplications are made for every editing works (page 19 of non-patent literature), communications for (and processes of) making these duplications will be excessive. To reduce them, range of duplication should be restricted. But it needs detailed knowledge of information that is treated by the application program. This is a common problem of methods based on cache.
In patent document 2, the latter editing work is judged invalid, if there were changes on a specified range. Indeed, the lower part of page (6) of the referenced invention shows that “if said record was changed by another process, update will be refused”. This is “first-arrival priority” and has the same problem of ADO.NET.
Based of time of editing work performed to duplicated DB, patent document 3 “rearranges, from the earliest time, versions of competing editing works (Step S604)” (Paragraph 0065 and 0079 of patent literature 3). And contents of the oldest date and time will be the latest version (Paragraph 0097). This means that priority is assigned to the earlier editing work. This description calls this method “first-edit priority” for comparison with other methods.
There is also a case, in which “first-edit priority” makes problems. For example, suppose that a computer is keeping results of editing work that were performed at a certain time (for example, one year before). If these results are sent up to a server suddenly one day and become effective, all editorial contents done in the past one year by other computers will be invalidity. Such operation is not usually acceptable. Patent document 4 has same problem, since it judges “editing work of earlier editing time” valid.
Patent document 5 assigns priority to later editing work. This specification calls this method “unconditional overwriting” for comparison with other methods. The referenced document assumes that amendments of each PC will be propagated, in nearly real time, to other PCs. Under this situation, “unconditional overwriting” has no problem.
However, for a case where plural PCs keep duplicated DBs and perform parallel editing works to them as described in this specification, it is impossible to propagate contents of editing work to other PCs immediately. If “unconditional overwriting”, that always overwrites by later editing contents, is applied to this case, operators of PCs cannot understand why each of edit is judged valid or invalid. We should consider a situation where a clock of PC, that determines editing time, differs from each other, and a possibility that the clock was changed intentionally. There are many problems to be solved if “unconditional overwriting” is used for the parallel editing works.
Other results of an investigation are shown below. Non-patent literature 6 is an invention about conditions for invoking synchronization of database. As synchronization method, it only shows an general concept of synchronization, that is synchronization by exchanging contents of editing work. This assumes that updating works (“recorded contents of editing work” of this description) created by parallel editing works are exchanged among them. There is a possibility that sequence of applying them to each DB will be different from each other, because of various reasons (delay of retransmission by errors, a gap of transmitting timing, and so on). And, there will be a serious problem, in which duplicated DBs are not same. However, no way resolving this problem is shown.
Patent document 7 is a invention that keeps all data of updating when competitions among editing works occur. It updates the original, only when there is no competition. Both the contents and the purpose differ from that of the present invention.
Non-patent literature 10 is invention that relates to file cache. It simply refuses editing works, when collision (that is competition of the present invention) among editing works is detected. It does not judge which one is valid. On the contrary the present invention selects valid one among editing works that collide each other.
Patent documents 8, 9, 10, 11 and 12 were also investigated, but they cannot do “solving conflicts caused by parallel DB editing”, which is the purpose of the present invention.    [Patent document 1] Patent application published H11-272534,A    [Patent document 2] Patent application published S61-134853,A    [Patent document 3] Patent application published 2005-216167,A    [Patent document 4] Patent application published H09-91184,A    [Patent document 5] Patent application published 2004-13867,A    [Patent document 6] Patent application published 2004-86800,A    [Patent document 7] Patent application published 2006-284998,A    [Patent document 8] Patent application published H11-161535,A    [Patent document 9] Patent application published 2005-503606    [Patent document 10] Patent application published 508050-508050    [Patent document 11] Patent application published H08-16447,A    [Patent document 12] Patent application published 2000-501532    [Non-patent literature 1] William R. Vaughn, translated by “Top Studio”, Yukiko Ito editorial supervision, “Windows (Trade Mark) database programming ADO.NET Specialized lecture, VB.NET”, First-edition, Aug. 4, 2003, Shoeisha Co., Ltd., TOKYO    [Non-patent literature 2] “Super illustration SQL handbook”, C&R research institute, first-edition issue, Aug. 12, 2005.    [Non-patent literature 3] “Main function and merits” [online], Apr. 22, 2007 search, the Internet (URL: http://www.sonicsoftware.co.jp/products/objectstore/function.html)    [Non-patent literature 4] “MVCC (multi version concurrency control) 9.1 Start”, [online], Apr. 22, 2007 search, the Internet (URL:http://www.postgresql.jp/document/pg721doc/user/mvcc.html #MVC C-INTRO)    [Non-patent literature 5] “9.5. The consistency-of-data check in an application level”, [online], Apr. 22, 2007 search and the Internet (http://www.postgresql.jp/document/pg721doc/user/applevel-consistency.html)    [Non-patent literature 6] “Cache art Guide”, [online], Apr. 22, 2007 search, the Internet (URL: http://www.intersystems.co.jp/cache/technologyguide/technologyguide.html)    [Non-patent literature 7] “Main functions and merits”, [online], Apr. 22, 2007 search, Internet (URL: http://www.sonicsoftware.co.jp/products/objectstore/function.html)    [Non-patent literature 8] “Outline of the data concurrency control in ADO.NET”, January, 2007, MSDN subscription library (msdn subscriptions Library), A disk file, (URL:ms-help://MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.VisualStudio.v80.ja/dvrad data/html/d5293098-4a88-4110-abd2-34d9e6661664.htm)    [Non-patent literature 9] “Tutorial: Process of a concurrency exception”, January, 2007, MSDN subscription library (msdn subscriptions Library), a disk file (URL: ms-help://MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_raddat a/html/73ee9759-0a90-48a9-bf7b-9d6fc17bff93.htm)    [Non-patent literature 10] “A World-wide Distributed File System SKINNY”, IPSJ SIG Notes 95-S-70-1, Academic Publication IPSJ SIG Notes Vol. 95, No. 79 ISSN 0919-6072